# -*- coding: utf-8 -*-
#   有个面板方面的方法
# @Time    ： 2025/11/14  00:04
# @Auther  ： 徐良
# File     :  panelFunction.py
from typing import Optional, Tuple
from PySide6.QtCore import QAbstractTableModel
from PySide6.QtWidgets import QLabel


def set_label_with_date_and_count(
        label: QLabel,
        model: QAbstractTableModel,
        show_date: int = 0,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None
) -> None:
    """
    设置标签显示记录数和可选的日期范围

    参数:
        label: 要设置的QLabel控件
        model: 数据模型对象
        show_date: 是否显示日期范围(默认False)
        start_date: 开始日期字符串(格式:yyyy-MM-dd)
        end_date: 结束日期字符串(格式:yyyy-MM-dd)

    异常:
        TypeError: 如果label不是QLabel或model不是QSqlTableModel

    示例:
        set_label_with_date_and_count(
            info_label,
            data_model,
            True,
            "2023-01-01",
            "2023-12-31"
        )
    """
    if not isinstance(label, QLabel):
        raise TypeError("label参数必须是QLabel类型")
    if not isinstance(model, QAbstractTableModel):
        raise TypeError("model参数必须是QSqlTableModel类型")

    try:
        record_count = model.rowCount()
        text = f"记录数: {record_count}"

        if show_date:
            if not start_date or not end_date:
                raise ValueError("显示日期范围时需要提供start_date和end_date")
            text = f"日期范围: {start_date}至{end_date} | " + text

        label.setText(text)
    except Exception as e:
        print(f"设置标签内容时出错: {str(e)}")
        label.setText("记录数: 0")
